package com.qf.pojo;

import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * @author 高圆圆
 * @date 2023/1/4 17:29
 * 购物车实体
 */
public class Cart {

    //很多购物车项
    //key:商品pid (唯一的)
    //value:购物车项
    private Map<String,CartItem>  map = new LinkedHashMap<>() ;

    private double totalMoney; //总金额

    public Cart() {
    }


    //定义一个方法:获取的Map集合中的所有的值的集合
    public Collection<CartItem> getBeans(){   //  beans就是Cart里面的javabean属性
        return map.values() ;  //Collection<V> values()
    }

    public Map<String, CartItem> getMap() {
        return map;
    }

    public void setMap(Map<String, CartItem> map) {
        this.map = map;
    }

    public double getTotalMoney() {
        return totalMoney;
    }

    public void setTotalMoney(double totalMoney) {
        this.totalMoney = totalMoney;
    }

    //定义一个方法:将购物车项添加购物车中
    public void cartItem2Cart(CartItem cartItem){
        //获取购物车项中的上pid
        String pid = cartItem.getProduct().getPid();
        //在当前的Map(存储很多购物车项)判断pid是否重复
        if(map.containsKey(pid)){
            //重复了,购物车项重复添加
            //以前的购物车项的数量+现在的购物车项的商品数量
            CartItem oldCartItem = map.get(pid);
            oldCartItem.setCount(oldCartItem.getCount()+cartItem.getCount());
        }else{
            //将新的购物车项直接添加map
            map.put(pid,cartItem) ;
        }
        //设置总金额
        totalMoney += cartItem.getSubTotal();  //和小计金额添加
    }

    /**
     * 将购物车项从购物车中删除
     * @param pid
     */
    public void removeCartItemFromCart(String pid){
        //通过Map集合
        CartItem cartItem = map.remove(pid); //将购物车项删除,返回value
        //总金额编号
        totalMoney -= cartItem.getSubTotal();


    }

    /**
     * 清空购物车
     */
    public void clearCart(){
        map.clear();
        totalMoney = 0.0 ; //总金额为0.0
    }
}
